/*
  学习目标：使用subscribe监听store仓库的数据变化
  语法: const 解除监听的函数 =  store.subscribe(() =>  { 数据变化, 回调自动执行})
*/
import { legacy_createStore as createStore } from "redux";

const store = createStore(function (state = { count: 99 }, action) {
  if (action.type === "add") {
    // 不可变数据原则: 新值覆盖旧值
    return {
      count: state.count + 1,
    };
  }

  if (action.type === "des") {
    return {
      count: state.count - 1,
    };
  }
  return state;
});

// 监听store仓库的数据变化
// 💥 需要再dispatch调用前, 开启监听
const unFn = store.subscribe(() => {
  // 回调函数会在每次数据变化时, 自动执行
  console.log("store.getState()  ----->  ", store.getState());
});

// 💥 取消监听后, dispatch不会再触发回调函数
unFn();

store.dispatch({ type: "des" });
store.dispatch({ type: "add" });
store.dispatch({ type: "add" });
store.dispatch({ type: "add" });
store.dispatch({ type: "add" });
store.dispatch({ type: "add" });
store.dispatch({ type: "add" });
